/**
 * @param {String} type = Point|LineString|Circle|Polygon|Square|Box
 *  */
function createDraw({
    type = "Point",
    source,
    success
}) {
    let geometryFunction = null;
    let maxPoints = null;
    if (type == "Box") {
        type = "LineString"
        geometryFunction = function (coordinates, geometry) {
            if (!geometry) {
                //多边形
                geometry = new ol.geom.Polygon(null)
            }
            var start = coordinates[0]
            var end = coordinates[1]
            geometry.setCoordinates([
                [start, [start[0], end[1]], end, [end[0], start[1]], start],
            ])
            return geometry
        }
        maxPoints = 2;
    } else if (type == "Square") {
        type = "Circle";
        geometryFunction = ol.interaction.Draw.createRegularPolygon(4)
    }
    let draw = new ol.interaction.Draw({
        type,
        source,
        geometryFunction,
        maxPoints
    })
    if (success) {
        draw.on("drawend", evt => {
            success(evt.feature)
        })
    }
    return draw;
}
export { createDraw }

// /**
//  * @param {string} type = [Square,Box,Point,LineString,Circle,Polygon]
//  */
// export function createDraw({
//     type,
//     source
// }) {
//     let geometryFunction = null;
//     let maxPoints = null;
//     if (type == "Square") {
//         type = "Circle"
//         geometryFunction = ol.interaction.Draw.createRegularPolygon(4)
//     }
//     if (type == "Box") {
//         type = "LineString";
//         geometryFunction = function (coordinates, geometry) {
//             if (!geometry) {
//                 //多边形
//                 geometry = new ol.geom.Polygon(null)
//             }
//             var start = coordinates[0]
//             var end = coordinates[1]
//             geometry.setCoordinates([
//                 [start, [start[0], end[1]], end, [end[0], start[1]], start],
//             ])
//             return geometry
//         }
//         maxPoints = 2;
//     }
//     let draw = new ol.interaction.Draw({
//         type,
//         source,
//         geometryFunction,
//         maxPoints
//     })
//     return draw;
// }